<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<HTML>
  <HEAD>
    <TITLE>package org.opengis.filter.expression</TITLE>
  </HEAD>
  <BODY>
    An <CITE>expression</CITE> is a combination of one or more elements that
    evaluate to single {@link java.lang.Object} value.
    
    The following is adapted from Filter encoding specifications:
    <ul>
    <li><A HREF="http://www.opengis.org/docs/02-059.pdf">Filter Encoding 1.0</a>
    <li><A HREF="http://portal.opengeospatial.org/files/?artifact_id=8340">OpenGIS&reg; Filter Encoding Implementation Specification Version 1.1</a>
    <li><A HREF="http://portal.opengeospatial.org/files/?artifact_id=5929">OpenGIS&reg; Catalogue Service Implementation Specification 2.0.1</a>
    </ul>

    <P ALIGN="justify">An <CITE>expression</CITE> can be formed using the elements:
    {@link org.opengis.filter.expression.Add}, {@link org.opengis.filter.expression.Subtract},
    {@link org.opengis.filter.expression.Multiply}, {@link org.opengis.filter.expression.Divide},
    {@link org.opengis.filter.expression.PropertyName}, {@link org.opengis.filter.expression.Literal}
    and {@link org.opengis.filter.expression.Function}. They all belong to the substitution group
    expression which means that any of them can be used wherever an expression is called for. In addition,
    the combinaison of these elements are themselves expressions and can be used wherever an expression is
    called for.</P>

    <H3>Arithmetic operators</H3>
    <P ALIGN="justify">The elements defined in this package are used to encode the fundamental arithmetic
    operations of addition, subtraction, multiplication and division. Arithmetic operators are binary
    operators meaning that they accept two arguments and evaluate to a single result.</P>

    <H3>Literals</H3>
    <P ALIGN="justify">A literal value is any part of a statement or expression that is to
    be used exactly as it is specified, rather than as a variable or other element. The
    {@link org.opengis.filter.expression.Literal} element is used to encode literal scalar
    and geometric values.</P>

    <H3>Functions</H3>
    <P ALIGN="justify">A function is a named procedure that performs a distinct computation.
    A function may accept zero or more arguments as input and generates a single result. A
    function is composed of the name of the function, encoded using the attribute name, and
    zero or more arguments contained within the {@link org.opengis.filter.expression.Function}
    element. The arguments themselves are {@linkplain org.opengis.filter.expression.Expression expressions}.</P>
    
    <h3>Data Access<h3>
    <P ALIGN="justify">Data access is acomplished by means of {@link org.opengis.filter.expression.PropertyName}
    expressions. These Expressions are independent of the data being queried and form the foundation of
    a, very simple, general query language offering independence specific bindings to
    Feature, Metadata and Record data structures.
    </p>
    
    <h3>Filter Encodings<h3>
    <P ALIGN="justify">At the time of this writing the Filter API has standard encodings for XML (Filter 1.0
    and Filter 1.1) and Text (a BNF form is provided in the Catalog 2.0.1 specification above). You should
    be warned that not all content can be expressed in all encodings, please refer to the javadocs for
    specific limitations.</p>
  </BODY>
</HTML>
